
linux内核aio功能
我正在测试内核异步io函数(不是posixaio),并试图弄清楚它是如何工作的。下面的代码是一个完整的程序,其中我简单地将一个数组重复写入使用O_DIRECT打开的文件中。我在回调函数中收到一个错误“写错的字节期望1024得到0”(请参阅work_done()中的fprintf语句)。对于不熟悉内核aio的用户,以...
2024-01-10
Linux内核如何测试?
Linux内核开发人员如何在提交代码后在本地测试他们的代码?他们是否使用某种单元测试,构建自动化?测试计划?回答:linux内核非常重视社区测试。通常,任何开发人员都会在提交之前测试他们自己的代码,并且经常会使用Linus的内核开发版本,或者与他们的工作相关的项目使用其他不稳定/开发树...
2024-01-10
在Linux内核中使用浮点
我正在阅读Robert Love的“ Linux内核开发”,并且遇到了以下段落:当用户空间进程使用浮点指令时,内核将管理从整数到浮点模式的转换。内核使用浮点指令时必须执行的操作因体系结构而异,但是内核通常会捕获陷阱,然后启动从整数模式到浮点模式的转换。与用户空间不同,内核不具有对浮点...
2024-01-10
从Linux内核发送UDP数据包
即使已经存在一个类似的主题,我也注意到它可以追溯到两年前,因此我认为打开一个新主题更为合适。我试图弄清楚如何从Linux内核(3.3.4)发送UDP数据包,以便监视随机数生成器(/drivers/char/random.c)的行为。到目前为止,由于sock_create和sock_sendmsg函数,我已经设法监视了一些事情。您可以在此消息...
2024-01-10
说“ Linux内核是抢占式”是什么意思?
我读到Linux内核是抢占式的,这与大多数Unix内核不同。那么,内核抢占到底意味着什么呢?一些类比或示例将比纯理论解释更好。回答:抢占式只是多任务处理的一种范例。还有其他类似协作多任务处理。通过比较它们可以更好地理解。回答:想象一下抢占式多任务的简单视图。我们有两个用户任...
2024-01-10
Linux内核中的stdlib.h替代方案?
在Linux中开发内核模块时,不允许使用C标准库。但是,如果我需要使用某些常用功能,例如strcat(),我应该去哪里?回答:无论Linux内核中没有实现什么,您都必须实现自己或从另一个开源内核模块中借鉴。但是,您会发现它strcat是在内核中实现的。请参阅内核API文档。特别是关于您的一般问题的“...
2024-01-10
在Linux内核中添加了新的网络协议
我知道在linux内核中,我们可以在传输层添加我们自己的协议,类似于TCP,UDP等。是否有任何钩子可以在网络层上注册类似于IP,ARP的新协议,可以将数据包传输到应用程序,以及如何在Linux内核中添加此协议?回答:要处理从用户空间到协议的通信,请使用内核套接字API注册协议。这使您可以从用户...
2024-01-10
如何从命令行获取Linux中的CPU /内核数?
我有这个脚本,但是我不知道如何获取打印输出中的最后一个元素:cat /proc/cpuinfo | awk '/^processor/{print $3}'最后一个元素应该是CPU数量减1。回答:grep -c ^processor /proc/cpuinfo将计算以“处理器”开头的行数 /proc/cpuinfo对于具有超线程的系统,可以使用grep ^cpu\\scores /proc/cpuinfo | uniq | awk '{print $4}'应该...
2024-01-10
在Linux内核哈希列表实现中使用双指针
我试图了解链表和哈希表的Linux内核实现。实现的链接在这里。我了解链表的实现。但是我对为什么在hlist(*pprev)中使用双指针感到困惑。hlist的链接在这里。我知道hlist用于实现哈希表,因为列表的头仅需要一个指针,并且可以节省空间。为什么不能使用单个指针(就像链接列表一样prev)来完成?...
2024-01-10
如何将Linux内核缓冲区映射到用户空间?
假设使用基于页面的方案分配缓冲区。一种实现mmap的方法是使用remap_pfn_range,但LDD3表示这不适用于常规内存。看来我们可以通过使用SetPageReserved标记保留的页面来解决此问题,以便将其锁定在内存中。但是,不是所有内核内存都已经不可交换,即已经保留了吗?为什么需要显式设置保留位?这与从HIGH...
2024-01-10
如何强制Linux内核枚举PCI-e总线?
Linux内核2.6我有一个通过GPIO加载的fpga,该GPIO连接到运行Linux的开发板。fpga将通过pci-express总线发送和接收数据。但是,这是在启动时枚举的,因此,未发现任何链接(因为在启动时未加载fpga)。如何在Linux中强制重新枚举pci-e总线?是否有一个简单的命令,或者我必须进行内核更改?我需要热插拔PCIe...
2024-01-10
如何使用GDB和QEMU调试Linux内核?
我是内核开发的新手,我想知道如何使用QEMU和gdb运行/调试Linux内核。我实际上正在阅读罗伯特·洛夫(RobertLove)的书,但不幸的是,它没有帮助读者了解如何安装适当的工具来运行或调试内核。因此,我要做的是遵循本教程http://opensourceforu.efytimes.com/ 2011/02 / kernel-development-debugging-using-eclipse/。我使用e...
2024-01-10
在Linux内核中如何实现percpu指针?
在多处理器上,每个内核可以有自己的变量。我以为它们是在不同地址中的不同变量,尽管它们在同一过程中并且具有相同的名称。但是我想知道,内核如何实现呢?它是否分配了一块内存来存放所有的percpu指针,并且每次它通过shift或其他方式将指针重定向到某个地址时?回答:普通全局变量不是...
2024-01-10
Linux内核每个TCP / IP网络连接消耗多少内存?
每个TCP / IP网络连接Linux内核平均消耗多少内存(在内核地址空间中)?回答:对于TCP连接,消耗的内存取决于sk_buff的大小(Linux内核使用的内部网络结构)连接的读写缓冲区缓冲区的大小可以根据需要进行调整root@x:~# sysctl -A | grep net | grep mem检查这些变量这些指定内核中所有网络连接的最大...
2024-01-10
Linux内核中的USB鼠标使用哪些驱动程序?
我从LDD3第14章读到了有关热插拔驱动程序的信息。我需要编写一个USB鼠标驱动程序,在插入硬件时会加载该驱动程序。现在,通过做一些实验,我知道有一个名为“hid-generic”的驱动程序,在插拔时会被调用。[ 6654.232046] usb 3-1: new low-speed USB device number 3 using uhci_hcd[ 6654.462061] usb 3-1: New USB device found, idVe...
2024-01-10
Linux内核:如何捕获按键并用另一个按键代替?
我试图涉足低级编程。我的目标是让用户在终端中键入密钥,捕获该密钥并输出另一个密钥。因此,例如,如果用户键入“ a”,我将键入“ b”,如果用户键入“b”,我将输出“ c”,依此类推。这样做的步骤是什么?我已经熟悉如何访问Linux内核源代码,对其进行编译和使用。谢谢。回答:考虑...
2024-01-10
Linux内核实时调试,如何完成以及使用哪些工具?
在Linux内核上进行实时调试最常用的方法和工具为何?我知道例如Linus。反对这种针对Linux内核的调试,或者至少是反对这种调试,因此在那些年里,在这种意义上没有做太多事情,但是老实说,自2000年以来已经过去了很多时间,我很想知道关于Linux的观念是否已改变项目以及当前使用哪些当前方法在Linu...
2024-01-10
如何构建Linux内核模块,使其与所有内核版本兼容?
我想构建一个将与所有内核发行版兼容的内核模块。例如,如果我在内核3.2.0-29上构建内核模块并尝试在3.2.0-86上加载它,则会出现以下错误:modprobe my_driver致命:插入my_driver(/lib/modules/3.2.0-86-generic/kernel/fs/my_drv/my_drv.ko)时出错:无效的模块格式[在日志消息中:my_drv:对符号module_layout的版本持不同...
2024-01-10
NOHZ = ON如何影响Linux内核中的do_timer()?
在一个简单的实验中,我设置NOHZ=OFF并用来printk()打印do_timer()函数被调用的频率。它在我的计算机上每10毫秒被调用一次。但是,如果NOHZ=ON这样,就会有很多抖动do_timer()被调用。在大多数情况下,它确实每10毫秒被调用一次,但有时它会完全错过最后期限。我已经研究了do_timer()NOHZ和NOHZ。do_timer()是负...
2024-01-10
如何从用户空间应用程序(Linux,C)中获取CPU内核号?
大概有一个库或简单的asm blob,可以获取我正在执行的当前CPU的编号。回答:使用sched_getcpu以确定在其上调用线程运行的CPU。请参阅man getcpu(系统调用)和mansched_getcpu(库包装器)。但是,请注意其内容:仅在调用时保证放置在cpu中的信息是最新的:除非已使用sched_setaffinity(2)修复了CPU关联性,...
2024-01-10
Linux中的沙箱
我想创建一个Web应用程序,该应用程序将允许用户上传一些C代码,并查看其执行结果(该代码将在服务器上编译)。用户不受信任,这显然会带来巨大的安全隐患。因此,我需要为应用创建某种沙箱。在最基本的级别上,我想将对文件系统的访问限制在某些指定的目录中。我无法直接使用chrootjails,...
2024-01-10
为Linux
许可替代有许多方法在具体验证 例如windows系统来验证软件:为Linux在操作系统窗口,我们使用通过在Windows注册表存储密钥值来验证软件文件的过程将如软件开始 - >许可密钥 - >浏览和更新许可密钥(.KEY 文件) - 当软件启动的许可证密钥>进行了验证 存储在注册表项 特定键值 个 上述过程是在windows...
2024-01-10
ios是linux吗
品牌型号:iPhone 13 pro系统:iOS 16.1.2ios不是linux,iOS和Linux是两个不同的操作系统。iOS是由苹果公司开发的专有操作系统,主要用于iPhone、iPad和iPodTouch等苹果设备。它是基于苹果公司的Darwin操作系统和其他专有技术开发的。而Linux是一个自由和开放源代码的类Unix操作系统,可以在多个计算机硬件平台上运行。它是由许多开源社区和...
2024-01-21
Linux中的核心转储
每当进程崩溃时,我都想创建一个核心转储。目前,我正在采用这种方法:使用gcc / g ++的“ -g”构建程序的特殊“调试”版本。执行“ ulimit -c unlimited”现在,只要程序崩溃,我们就获得核心转储。但我想减少步骤数,以便:应始终创建核心转储。即使是“发布”版本。不应要求用户ulimit -c unlimit...
2024-01-10
最好的c音频库linux
我想知道是否有人对c的最佳linux音频库有什么看法。我正在学习,并且正在使用力宝上的音频输出进行实验。编辑:现在我要做的就是放出频率音。回答:您可以尝试FMod。你可以在这里得到它。它具有高级api,支持许多编程语言和操作系统。可以播放和编码许多音频格式,还支持3d声音等等。它对于...
2024-01-10
Linux非阻塞FIFO(按需记录)
我喜欢记录“按需”输出的程序。例如。输出记录到终端,但是另一个进程可以随时挂接到当前输出。经典方法是:myprogram 2>&1 | tee /tmp/mylog并按需tail /tmp/mylog但是,这将创建一个不断增长的日志文件,即使在驱动器空间不足之前也不会使用它。所以我的尝试是:mkfifo /tmp/mylogmyprogram 2>&1 | tee /tmp/my...
2024-01-10
Linux PID回收
Linux中是否有关于回收使用过的PID的政策?我的意思是,如果使用了PId,将在多长时间后再次使用它?回答:随着新进程的加入,PID将增加到与系统有关的限制,然后回绕。在这种回绕发生之前,内核将不会重用PID。限制(最大pids)为/proc/sys/kernel/pid_max。该手册说:/proc/sys/kernel/pid_max (从Linux 2.5.34...
2024-01-10
在Linux上断言失败后继续调试吗?
当Windows上的Visual C ++断言失败时,调试器将停止,显示消息,然后让您继续(或者,如果未运行调试会话,则为您启动VisualStudio)。在Linux上,assert()的默认行为似乎是显示错误并退出程序。由于我所有的断言都通过宏进行,因此我尝试使用信号来解决此问题,例如#define ASSERT(TEST) if(!(TEST)) raise(SIGST...
2024-01-10
linux是什么
品牌型号:华为MateBook D15系统:Windows 11Linux是一种自由和开放源代码的类Unix操作系统,它最初是由芬兰的计算机科学家LinusTorvalds在1991年创建的。Linux操作系统的内核是由Torvalds编写的,它是一个开放源代码的、免费的、高性能的、可移植的操作系统内核。Linux操作系统支持多用户、多任务和多线程,具有很强的稳定性和安全性。它广泛用于服务...
2024-01-21
是否有类似Linux的WMI?
我喜欢整个WMI概念,并且可以在Linux(在某些脚本中)中真正使用它。Linux系统有类似的东西吗?回答:并不是的。您是否正在使用WMI获取系统参数,查询过程,更改配置或监视系统事件,等等?内核通过/proc和/sys文件系统公开了许多信息和可调旋钮。没有查询语言,只有目录和文件的组织层次结构。...
2024-01-10
